/**
 * 产品管理相关的API接口封装
 * 提供产品数据的增删改查功能
 */

// 导入请求工具函数
import request from "@/utils/request"

/**
 * 获取产品列表（支持分页和筛选）
 * @param {Object} params - 请求参数
 * @param {number} params.page - 页码，默认为1
 * @param {number} params.pageSize - 每页条数，默认为10
 * @param {string} params.product_name - 产品名称筛选条件（可选）
 * @param {string} params.product_code - 产品编码筛选条件（可选）
 * @param {number} params.category_id - 产品分类ID筛选条件（可选）
 * @returns {Promise} 返回包含产品列表和分页信息的Promise
 */
export function getProductList(params = {}) {
  // 设置默认分页参数
  const defaultParams = {
    page: 1,
    pageSize: 10,
    ...params
  }

  return request({
    url: "/products/list",
    method: "get",
    params: defaultParams
  });
}

/**
 * 获取产品详情
 * @param {string|number} id - 产品ID
 * @returns {Promise} 返回包含产品详情信息的Promise
 */
export function getProductById(id) {
  return request({
    url: `/products/${id}`,
    method: "get"
  });
}

/**
 * 创建产品
 * @param {Object} data - 产品数据
 * @param {string} data.product_name - 产品名称
 * @param {number} data.cost_price - 成本价
 * @param {number} data.retail_price - 零售价
 * @param {number} data.wholesale_price - 批发价
 * @param {number} data.category_id - 产品分类ID
 * @param {string} data.specifications - 产品规格
 * @returns {Promise} 返回创建结果的Promise
 */
export function createProduct(data) {
  return request({
    url: "/products/add",
    method: "post",
    data
  });
}

/**
 * 更新产品
 * @param {string|number} id - 产品ID
 * @param {Object} data - 产品数据
 * @param {string} data.product_name - 产品名称
 * @param {number} data.cost_price - 成本价
 * @param {number} data.retail_price - 零售价
 * @param {number} data.wholesale_price - 批发价
 * @param {number} data.category_id - 产品分类ID
 * @param {string} data.specifications - 产品规格
 * @returns {Promise} 返回更新结果的Promise
 */
export function updateProduct(id, data) {
  return request({
    url: "/products/update",
    method: "put",
    data: {
      id,
      ...data
    }
  });
}

/**
 * 删除产品
 * @param {string|number} id - 产品ID
 * @returns {Promise} 返回删除结果的Promise
 */
export function deleteProduct(id) {
  return request({
    url: `/products/${id}`,
    method: "delete"
  });
}

/**
 * 批量操作产品
 * @param {Object} data - 批量操作数据
 * @returns {Promise} 返回批量操作结果的Promise
 */
export function batchProductOperation(data) {
  return request({
    url: "/products/batch",
    method: "post",
    data
  });
}

/**
 * 导入产品（Excel文件）
 * @param {File} file - Excel文件
 * @returns {Promise} 返回导入结果的Promise
 */
export function importProducts(file) {
  const formData = new FormData();
  formData.append('file', file);

  return request({
    url: "/products/import",
    method: "post",
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  });
}
